LinuC-1 - 102試験 - 1.08:システム管理 - 1.08.3 ローカライゼーションと国際化

Last Update : January 02 2021 16:07:27

     

a. ローカライゼーション

ソフトウェアの多言語対応の段階の一つで、国際化されたソフトウェアをある特定の言語に対応させること。その言語に対応したメニュー表示などを行ったり、その言語特有の処理などを追加するといった修正を行います。その前段階として、ソフトウェアに様々な言語で利用するための設計や仕様などを組み込むことを国際化(インターナショナリゼーション:internationalization、I18N)といいます。そして、様々な言語への対応を組み込み、利用者が自分の使用する言語にあわせて設定を切り替えて使用できるようにすることを多言語化(マルチリンガライゼーション:multilingualization、M17N)といいます。


b. ロケール

Linux では Locale を使ってユーザーがどの言語を使うか定義します。同じように locale は使われる文字セットも定義するので、正しい locale を設定することは言語が非 ASCII 文字を含んでいる場合に特に重要です。

ロケールカテゴリ
ロケールカテゴリの種類は次のとおりです。

  • LC_CTYPE
    文字の分類・比較および大文字/小文字の変換。
  • LC_TIME
    月の名前、曜日、一般的な完全表示や短縮表示など、日付や時刻の書式を指定します。
  • LC_MONETARY
    ロケールの通貨記号、千の区切り文字、符号の位置、小数点以下の桁数など、通貨の書式を指定します。
  • LC_NUMERIC
    数値の小数区切り文字 (または基数文字)、千の区切り文字、およびグループ化を指定します。
  • LC_COLLATE
    文字の照合順序および正規表現の定義を指定します。
  • LC_MESSAGES
    ローカライズメッセージの言語、および肯定と否定の応答 (yes と no の文字列と表現) を指定します。
  • LO_LTYPE
    言語レンダリングに関する情報を提供するレイアウトエンジンを指定します。言語レンダリング (またはテキストレンダリング) は、文字の形状や方向の属性に依存します。

これらすべてに同じ値を設定する場合は、環境変数のLANGやLC_ALLに設定します。
環境変数のLC_ALLに設定されていれば、すべたのカテゴリでLC_ALLの設定が適用されます。
環境変数のLANGに設定されていれば、個々のカテゴリに設定がなければLANGの設定を適用しますが、個々のカテゴリに設定があればそちらを適用します。

現在のロケールを確認するには、locale コマンドを使用します。

● locale コマンド構文
  locale [オプション]

● locale コマンドオプション
 -a システムがサポートしているロケール一覧を表示します。
 -m 文字マッピング一覧を表示します。

ロケール設定の確認

$ locate LANG=ja_JP.UTF-8 LC_CTYPE="ja_JP.UTF-8" LC_NUMERIC="ja_JP.UTF-8" LC_TIME="ja_JP.UTF-8" LC_COLLATE="ja_JP.UTF-8" LC_MONETARY="ja_JP.UTF-8" LC_MESSAGES="ja_JP.UTF-8" LC_PAPER="ja_JP.UTF-8" LC_NAME="ja_JP.UTF-8" LC_ADDRESS="ja_JP.UTF-8" LC_TELEPHONE="ja_JP.UTF-8" LC_MEASUREMENT="ja_JP.UTF-8" LC_IDENTIFICATION="ja_JP.UTF-8" LC_ALL=

メッセージのロケールを設定

$ export LC_MESSAGES=en_US.UTF-8

一時的にfindのmanマニュアルの言語を英語に変更

$ LANG=C man find


c. 文字コード

1. システム全体の文字コード

Linuxでシステム全体の文字コードを変更するには、/etc/sysconfig/i18n を修正します。

UTF-8
LANG="ja_JP.UTF-8" SUPPORTED="ja_JP.UTF-8:ja_JP:ja"

● 文字コードの種類
  • ASCII
    7ビットコードで128種類のローマ字と数字と記号と制御コードが含まれている文字セット
  • ISO-8859-1
    ASCIIを拡張した8ビットコードの文字セット。米国やヨーロッパで使われている文字セット
  • ISO-2022-JP
    半角カナを除くJISコードの日本語文字セット 実際には、半角カナが入っている場合もある
    ISO-2022-JPなどで使われているのは7ビットコードです。 7ビットコードでは最上位ビットを使用しないため、00-7Fまでの文字コードしか存在しません。
  • Shift_JIS
    SJISコードの日本語文字セット
  • EUC-JP
    EUCコードの日本語文字セット
    Extended Unix Codeの略で、日本語UNIXで使われているコードです。
  • UTF-8
    Unicode(UTF-8)の日本語文字セット
    文字を2バイト、または4バイトで表し、世界中の文字を表現しようとしています。 Unicodeは、ISO 10646の中で、UCS-2(BMP)として採用されています。
  • UTF-16
    Unicode(UTF-16)の日本語文字セット

2. 文字コードの変換

文字コードの変換には、iconv コマンドを使用します。

● iconv コマンド構文
  iconv [オプション] [入力ファイル]

● iconv コマンドオプション
 -f 変換元コード 入力元の文字コードの指定
 -t 変換先コード 出力先の文字コードの指定
 -l 扱える文字コードの一覧を表示

EUC-JPで書かれたファイルin.txtをSHIFT_JISのout.txtに変換する

$ iconv -f EUC-JP -t SHIFT_JIS in.txt > out.txt


d. タイムゾーン

Linux で、システムのタイムゾーンを設定する方法 GUI なしの Linux でシステム自体のタイムゾーンをコンソール(コマンドライン)だけで設定するには、ルート(root)権限が必要である。以下のようにする。

# date 2013年 6月 4日 火曜日 20:28:10 JST

ルートでログインします。現在のタイムゾーンを確認するには date コマンドを使用します。date と入力して Enter キーを押すと、Sat Oct 12 00:00:00 PDT 2006 のように表示されます。この場合は PDT がタイムゾーンで、PDT とは Pacific Daylight Saving Time (太平洋標準時の夏時間)の略で、米国の場合は夏時間は PDT と表記されます。夏時間でない場合は PST です。MDT/MST、CDT/CST、EDT/EST なども同様です。JSTなら日本標準時 です。
/usr/share/zoneinfo にディレクトリを変更します。このディレクトリに設定できるタイムゾーン情報が集まっています。
日本の場合はそのまま Japan というファイルが見つかりますが、Asia というディレクトリの下に Tokyo というファイルも見つかるはずです。米国に設定したい場合は America の中から選択します。
ここで選んだファイルを /etc/localtime にコピーすればいいのですが、まずは mv /etc/localtime /etc/localtime.org などとしてから、JST / 日本(東京)の場合は、

# cp /usr/share/zoneinfo/Asia/Tokyo /etc/localtime または、 # ln -s /usr/share/zoneinfo/Asia/Tokyo /etc/localtime

とします。

tzselect コマンドや tzconfig コマンドを使用すると、タイムゾーンの設定ができます。 tzselect は対話的に地域を指定して TZ に設定する内容をナビゲートしてくれます。 tzconfigコマンドを利用すると、/etc/localtimeと/etc/timezoneの二つの設定が一度でできます。

環境変数 TZ を設定することでもタイムゾーン情報の設定ができます。

$ export TZ="Asia/Tokyo"


z. 出題範囲概要

概要 :
  • システムを英語以外の言語にローカライズできる。スクリプトでLANG=Cが役立つ理由についても理解している。

詳細 :
  • 国際化(i18n) とローカライゼーション(l10n)の基本を理解している。
  • ロケール設定と環境変数を設定する。
    LANG, LC_ALL, LC_*
    /usr/bin/locale
    iconv, UTF-8, ISO-8859, ASCII, Unicode, ISO-2022-JP

  [ 例題 ] 


         

    www.it-shikaku.jp